package com.financial.sys.task;

import com.financial.model.pojo.TRepayment;
import com.financial.model.pojo.TUserWallet;
import com.financial.sys.mapper.repayment.TRepaymentMapper;
import com.financial.sys.service.repayment.TRepaymentService;
import org.springframework.beans.factory.annotation.Autowired;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

//@Component
public class ScheduledTask {

    @Autowired
    TRepaymentService TRepaymentService;
    @Autowired
    TRepaymentMapper TRepaymentMapper;
    @Autowired
    com.financial.sys.mapper.repayment.TUserWalletMapper TUserWalletMapper;

    private static final int count1 = 1;
    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    /**
     * 系统有1个定时任务调度器，每30秒检查当前系统时间，
     * 是否超过还款计划条目的'还款截止时间'。
     * 如果超过还款截止时间，
     * 当前还款计划状态修改为'逾期'
     */
    //@Scheduled (fixedDelay = 10000)
        public void checkOverdue() {
        System.out.println("正在搜索逾期信息....");
            List<TRepayment> tRepayments = TRepaymentMapper.selectList(null);
            // 找到所有逾期的还款信息
            for( TRepayment repayment : tRepayments ) {
                // 修改还款状态为'逾期'
                int res = repayment.getDeadline().compareTo(new Date());
                if (res==-1){
                    repayment.setState(1);
                    TRepaymentMapper.updateById(repayment);
                    // 获取借款人钱包信息
                    TUserWallet userWallet = TUserWalletMapper.selectById(repayment.getBorrowUserId());
                    // 信用得分减1分    // 减少借款人的信用得分
                    int creditScore = userWallet.getCreditScore();
                    creditScore =creditScore- 1;
                    userWallet.setCreditScore(creditScore);
                    // 授信额度 ：信用得分 * 100元  （单位 元）
                    long creditLine = creditScore * 100 * 100;
                    // 如果授信额度小于0元，就改为0元
                    if( creditLine < 0 ){
                        creditLine = 0;
                        userWallet.setCreditLine(creditLine);
                    }
                    // 更新用户余额
                    TUserWalletMapper.updateById(userWallet);
                }
            }
        }
}
